le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
↳ QTRS
↳ DependencyPairsProof
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
LOW(N, cons(M, L)) → IFLOW(le(M, N), N, cons(M, L))
QUICKSORT(cons(N, L)) → APP(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
QUICKSORT(cons(N, L)) → QUICKSORT(low(N, L))
APP(cons(N, L), Y) → APP(L, Y)
LE(s(X), s(Y)) → LE(X, Y)
HIGH(N, cons(M, L)) → IFHIGH(le(M, N), N, cons(M, L))
HIGH(N, cons(M, L)) → LE(M, N)
IFLOW(true, N, cons(M, L)) → LOW(N, L)
QUICKSORT(cons(N, L)) → HIGH(N, L)
QUICKSORT(cons(N, L)) → QUICKSORT(high(N, L))
LOW(N, cons(M, L)) → LE(M, N)
IFHIGH(false, N, cons(M, L)) → HIGH(N, L)
IFLOW(false, N, cons(M, L)) → LOW(N, L)
IFHIGH(true, N, cons(M, L)) → HIGH(N, L)
QUICKSORT(cons(N, L)) → LOW(N, L)
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
LOW(N, cons(M, L)) → IFLOW(le(M, N), N, cons(M, L))
QUICKSORT(cons(N, L)) → APP(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
QUICKSORT(cons(N, L)) → QUICKSORT(low(N, L))
APP(cons(N, L), Y) → APP(L, Y)
LE(s(X), s(Y)) → LE(X, Y)
HIGH(N, cons(M, L)) → IFHIGH(le(M, N), N, cons(M, L))
HIGH(N, cons(M, L)) → LE(M, N)
IFLOW(true, N, cons(M, L)) → LOW(N, L)
QUICKSORT(cons(N, L)) → HIGH(N, L)
QUICKSORT(cons(N, L)) → QUICKSORT(high(N, L))
LOW(N, cons(M, L)) → LE(M, N)
IFHIGH(false, N, cons(M, L)) → HIGH(N, L)
IFLOW(false, N, cons(M, L)) → LOW(N, L)
IFHIGH(true, N, cons(M, L)) → HIGH(N, L)
QUICKSORT(cons(N, L)) → LOW(N, L)
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
APP(cons(N, L), Y) → APP(L, Y)
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(cons(N, L), Y) → APP(L, Y)
The value of delta used in the strict ordering is 1.
POL(APP(x1, x2)) = (4)x_1
POL(cons(x1, x2)) = 1/4 + (4)x_2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
LE(s(X), s(Y)) → LE(X, Y)
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LE(s(X), s(Y)) → LE(X, Y)
The value of delta used in the strict ordering is 1/4.
POL(s(x1)) = 1/2 + (4)x_1
POL(LE(x1, x2)) = (1/2)x_1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
IFHIGH(false, N, cons(M, L)) → HIGH(N, L)
IFHIGH(true, N, cons(M, L)) → HIGH(N, L)
HIGH(N, cons(M, L)) → IFHIGH(le(M, N), N, cons(M, L))
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
IFHIGH(true, N, cons(M, L)) → HIGH(N, L)
Used ordering: Polynomial interpretation [25,35]:
IFHIGH(false, N, cons(M, L)) → HIGH(N, L)
HIGH(N, cons(M, L)) → IFHIGH(le(M, N), N, cons(M, L))
The value of delta used in the strict ordering is 2.
POL(cons(x1, x2)) = x_1 + (4)x_2
POL(le(x1, x2)) = (4)x_1
POL(true) = 4
POL(false) = 0
POL(s(x1)) = (2)x_1
POL(HIGH(x1, x2)) = (4)x_2
POL(0) = 4
POL(IFHIGH(x1, x2, x3)) = (1/2)x_1 + x_3
le(s(X), 0) → false
le(0, Y) → true
le(s(X), s(Y)) → le(X, Y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
IFHIGH(false, N, cons(M, L)) → HIGH(N, L)
HIGH(N, cons(M, L)) → IFHIGH(le(M, N), N, cons(M, L))
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
IFHIGH(false, N, cons(M, L)) → HIGH(N, L)
Used ordering: Polynomial interpretation [25,35]:
HIGH(N, cons(M, L)) → IFHIGH(le(M, N), N, cons(M, L))
The value of delta used in the strict ordering is 1/16.
POL(cons(x1, x2)) = 1/4 + (4)x_1 + (4)x_2
POL(le(x1, x2)) = 1/2
POL(true) = 0
POL(false) = 0
POL(s(x1)) = 0
POL(HIGH(x1, x2)) = (1/4)x_2
POL(0) = 0
POL(IFHIGH(x1, x2, x3)) = (1/4)x_3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDP
HIGH(N, cons(M, L)) → IFHIGH(le(M, N), N, cons(M, L))
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
IFLOW(true, N, cons(M, L)) → LOW(N, L)
LOW(N, cons(M, L)) → IFLOW(le(M, N), N, cons(M, L))
IFLOW(false, N, cons(M, L)) → LOW(N, L)
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
IFLOW(true, N, cons(M, L)) → LOW(N, L)
LOW(N, cons(M, L)) → IFLOW(le(M, N), N, cons(M, L))
IFLOW(false, N, cons(M, L)) → LOW(N, L)
The value of delta used in the strict ordering is 1/8.
POL(cons(x1, x2)) = 1/4 + (4)x_2
POL(le(x1, x2)) = 0
POL(true) = 0
POL(IFLOW(x1, x2, x3)) = x_2 + (1/2)x_3
POL(false) = 0
POL(s(x1)) = 0
POL(LOW(x1, x2)) = x_1 + x_2
POL(0) = 0
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
QUICKSORT(cons(N, L)) → QUICKSORT(high(N, L))
QUICKSORT(cons(N, L)) → QUICKSORT(low(N, L))
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QUICKSORT(cons(N, L)) → QUICKSORT(high(N, L))
QUICKSORT(cons(N, L)) → QUICKSORT(low(N, L))
The value of delta used in the strict ordering is 1/16.
POL(cons(x1, x2)) = 1/4 + (2)x_2
POL(high(x1, x2)) = x_2
POL(ifhigh(x1, x2, x3)) = x_3
POL(low(x1, x2)) = (2)x_2
POL(le(x1, x2)) = 0
POL(true) = 0
POL(iflow(x1, x2, x3)) = (2)x_3
POL(false) = 0
POL(s(x1)) = 0
POL(QUICKSORT(x1)) = (1/4)x_1
POL(0) = 0
POL(nil) = 0
low(N, nil) → nil
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
ifhigh(true, N, cons(M, L)) → high(N, L)
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
le(0, Y) → true
le(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)
app(nil, Y) → Y
app(cons(N, L), Y) → cons(N, app(L, Y))
low(N, nil) → nil
low(N, cons(M, L)) → iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) → cons(M, low(N, L))
iflow(false, N, cons(M, L)) → low(N, L)
high(N, nil) → nil
high(N, cons(M, L)) → ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) → high(N, L)
ifhigh(false, N, cons(M, L)) → cons(M, high(N, L))
quicksort(nil) → nil
quicksort(cons(N, L)) → app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))